<?php namespace Home\Model;
use Hdphp\Model\Model;
//分类模型
class Category extends Model{
	protected $table = 'category';
//	根据分类获得商品的gid
	public function cidGetGid($cid){
//		查询在当前分类下的 所有子分类
//		（1）查询分类所有数据
		$cateData = $this->get();
//		获得该cid下的所有子分类
		
		$cids = $this->getSon($cateData,$cid);
//		将自己压进去
		$cids[] = $cid;
//		转成字符串
		$newCids = implode(',', $cids);
//		通过该分类的所有子分类（cids）找出商品的gid
		$gids = Db::table("goods")->where("category_cid IN ($newCids)")->lists("gid");
		return $gids;
	}
//	获得子级
	public function getSon($allData,$cid){
		$temp = array();
		foreach($allData as $v){
//			如果找到子级
			if($v['pid'] == $cid){
				$temp[] = $v['cid'];
				$temp = array_merge($temp,$this->getSon($allData,$v['cid']));
			}
		}
		return $temp;
	}
//	根据商品的gids查询 该商品的所有属性
	public function getGoodsAttr($gids){
		if($gids){
//			转成字符串
			$gidsStr = implode(',', $gids);
			$goodsAttr = Db::table("goods_attr")->where("goods_gid IN ($gidsStr)")->groupBy("gavalue")->get();
//			将相同类型的弄一起
//			sp($goodsAttr);
			$temp1 = array();
			foreach($goodsAttr as $v){
				$temp1[$v['type_attr_taid']][] = $v;
			}
			foreach($temp1 as $taid =>$value){
//				查询属性的类型名称
				$name = Db::table("type_attr")->where("taid={$taid}")->pluck("taname");
				$temp2[] = array(
					'name' => $name,
					'value' =>$value
				);
			}
			return $temp2;
		}else{
			return array();
		}
	}
//	根据商品的属性id进行筛选商品
	public function filterGid($param,$cidGids){
		$gids  = array();
		foreach($param as $gaid){
//		如果不是全部的时候
			if($gaid){
//				通过gaid获得属性名称
				$name = Db::table('goods_attr')->where("gaid={$gaid}")->pluck('gavalue');
//				通过属性名称查找商品的id
				$gids[] = Db::table("goods_attr")->where("gavalue='{$name}'")->lists("goods_gid");
			}	
		}
//		如果点击任何一个筛选属性的时候
		if($gids){
//			把获得好的商品gid取交集
			$gidsOne = $gids[0];
			foreach($gids as $v){
				$gidsOne = array_intersect($v, $gidsOne);
			}
//			再和分类找出来的$cidGids取交集
			$finalGids = array_intersect($gidsOne, $cidGids);
			return $finalGids;
		}else{//如果全部点击   全部 的时候
			return $cidGids;
		}

	}
}




 ?>